1. Field
This application relates to communication networks and, more particularly, to a method for packet marking.
2. Description of the Related Art
Data communication networks may include various switches, nodes, routers, and other devices coupled to and configured to pass data to one another. These devices will be referred to herein as “network elements”. Data is communicated through the data communication network by passing protocol data units, such as frames, packets, cells, or segments, between the network elements by utilizing one or more communication links. A particular protocol data unit may be handled by multiple network elements and cross multiple communication links as it travels between its source and its destination over the network.
Applications, such as email applications, instant messaging applications, web browsers, and other applications running on end user devices transmit packets of data on the network. A given end user device may have multiple such applications transmitting data on the network and receiving data from the network. Likewise virtual machines running on servers in a data center may have multiple applications transmitting and receiving data from the network.
Different applications may have different tolerances for latency (delay), jitter (differences between the amount of time it takes individual packets to be transmitted on the network), and packet loss, in connection with transmission of data on the network. To enable these applications to operate correctly, it may be desirable to have the network treat flows of packets from different applications differently.
To enable this to occur, the network elements must be able to identify which packets are associated with which applications. One way to attempt to do this is to have the network elements classify packets into flows and apply services on a per-flow basis. Unfortunately, traffic from a given application may include multiple TCP/UDP sessions where Layers 3 and 4 of the seven layer networking stack are being used for transport control, or multiple HTTP sessions where layer 7 (application layer) is being used to implement transport control. Further, on top of that, the application may encrypt the data being transmitted (layer 7 encryption) and optionally the network itself may implement layer 2 or layer 3 encryption, for example in connection with implementing a Virtual Private Network (VPN).
Additionally, keeping track of flows of data requires the network elements to be stateful—the network elements need to keep track of which flows are associated with particular applications. Designing the network elements to keep state of this nature is expensive from a network element design standpoint. Likewise, requiring the network elements to associate packets with flows in connection with providing services can also increase latency associated with packet forwarding, as the increased processing associated with performing this correlation translates to increased delay in implementing a forwarding decision. Further when the data itself is encrypted, it may not be possible to determine which packet is associated with a particular application, so even if it were possible to maintain state it may not be possible to implement per packet services on the network.